package com.example.echoewish.repository;

import com.example.echoewish.repository.network.CommentServiceNetwork;
import com.example.echoewish.pojo.Comment;
import com.example.echoewish.pojo.MyComment;
import com.example.echoewish.pojo.OthersComment;
import com.example.echoewish.util.LogUtil;


import org.jetbrains.annotations.NotNull;

import retrofit2.Callback;

// 仓库类是为了 从  数据库 或者 网络 获取 数据
//注意仓库都是单例模式【必须是 多线程安全的单例】 所以采用饿汉模式启动
public class CommentMessageRepository {
    private final static CommentMessageRepository instance=new CommentMessageRepository();

    public static CommentMessageRepository getInstance()
    {
        return instance;
    }

    public void publishNewComment(@NotNull Comment comment, Callback callback)
    {
        try
        {
            CommentServiceNetwork.publishNewComment(comment,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"发布评论接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().d(LogUtil.GET_DATA_TAG,"发布评论接口调用时 发起网络请求失败");
        }
    }

    public void deleteComment(@NotNull MyComment comment, Callback callback)
    {
        try
        {
            CommentServiceNetwork.deleteComment(comment,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"删除评论接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().d(LogUtil.GET_DATA_TAG,"删除评论接口调用时 发起网络请求失败");
        }
    }

    public void deleteComment(@NotNull OthersComment comment, Callback callback)
    {
        try
        {
            CommentServiceNetwork.deleteComment(comment,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"删除评论接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().d(LogUtil.GET_DATA_TAG,"删除评论接口调用时 发起网络请求失败");
        }
    }

    public void queryMyCommentByUserId(int userId,Callback callback)
    {
        try
        {
            CommentServiceNetwork.queryMyCommentByUserId(userId,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"通过我的评论接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().d(LogUtil.GET_DATA_TAG,"通过我的评论接口调用时 发起网络请求失败");
        }
    }

    public void queryCommentByPostId(int postId,Callback callback)
    {
        try
        {
            CommentServiceNetwork.queryCommentByPostId(postId,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"通过帖子评论接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().d(LogUtil.GET_DATA_TAG,"通过帖子评论接口调用时 发起网络请求失败");
        }
    }

    public void queryOthersCommentByUserId(int userId,Callback callback)
    {
        try
        {
            CommentServiceNetwork.queryOthersCommentByUserId(userId,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"获取其他人的评论接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().d(LogUtil.GET_DATA_TAG,"获取其他人的评论接口调用时 发起网络请求失败");
        }
    }
}
